package awk.designModel.singleton;

/**
 * 懒汉式单例模式：用的时候才创建，线程安全，
 * @author cui_yonghua  https://blog.csdn.net/cui_yonghua/article/details/90512943
 */
public class LazyClassB {
	//1.私有化构造方法，使得在类的外部不能调用此方法，限制产生多个对象
	private LazyClassB(){ }
	//2.在类的内部创建一个类的实例(这里有一个变体,可以使用 volatile  static)
	private static LazyClassB instance ;
	//3.对外部提供调用方法：将创建的对象返回，只能通过类来调用
	public static LazyClassB  getInstance(){
		if(instance == null) {
			synchronized(LazyClassB.class){
				//双重校验
				if(instance == null){ //再检查一次，仍未空才创建实例
					instance = new LazyClassB();
				}
			}
		}
		return instance;
	}

	//测试
	public static void main(String[] args) {
		LazyClassB a = LazyClassB.getInstance();
		LazyClassB b = LazyClassB.getInstance();
		System.out.println(a==b);
	}
}

